﻿namespace Max.PH4.Shoppgin.Admin.Common
{
    public class ReflectionHelper
    {

        public static List<dynamic> GetEnumBind(Type t)  //(Enum e)
        {
            List<dynamic> list = new List<dynamic>(); //这个集合是用来存放枚举的数据
            //获取这个枚举的类型
            //var t = e.GetType(); //  typeof(e);
            //获取这个枚举中具体的所有字段
            var fs = t.GetFields();
            //因为上面获取的是所有的字段，所以要循环获取具体某个字段的Display
            fs.ToList().ForEach(x => {
                if (!x.Name.Equals("value__"))
                {
                    //获取具体某个字段的display特性
                    var objs = x.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute), true);
                    int v = (int)Enum.Parse(t, x.Name); //拿到这个字段对应的值
                    string n = "";
                    //获取到特性之后，去判断是否存
                    if (objs != null && objs.Length > 0)
                    {
                        //存在，则可以获取这个display特性的name属性(只取第0个的特性)
                        n = ((System.ComponentModel.DataAnnotations.DisplayAttribute)objs[0]).Name;
                    }
                    else
                    {
                        //不存在display特性，那么就获取这个字段本身的名称
                        n = x.Name;
                    }
                    list.Add(new { id = v, name = n });
                }
            });

            return list;
        }
    }
}